// 题目：给定一个整数数组 nums 和一个目标值 target，请你在该数组中找出和为目标值的那 两个 整数，并返回他们的数组下标。
// 你可以假设每种输入只会对应一个答案。但是，数组中同时可能存在多个答案。
// 你可以按任意顺序返回答案。 

const twoSum = (nums, target) => {
    // 定义一个空的Map对象
    const hasMap = new Map();
    // 遍历数组
    for (let i = 0; i < nums.length; i++) {
        //定义当前的一个数值
        const currentNum = nums[i];
        // 计算当前元素的另一个数值
        const complement = target - currentNum;
        if (hasMap.has(complement)) {
            return [hasMap.get(complement), i]
        }
        hasMap.set(currentNum, i)
    }
    return []
}

let nums = [2, 3, 4, 5, 6]
let target = 9
const test = twoSum(nums, target)
console.log(test);
// 不要打扰我我在写代码
// Map是ES6新增的一个数据结构，类似于对象，但是它的键可以是任意类型，而不仅仅是字符串。

const twoSum2 = (nums, target) => {
    const hasMap = new Map();
    for (let i = 0; i < nums.length; i++) {
        const currentNum = nums[i]
        const complement = target - currentNum
        if (hasMap.has(complement)) {
            return [hasMap.get(complement), i]
        }
        hasMap.set(currentNum, i)
    }
    return []
}

const test2 = twoSum2(nums, target)
console.log(test2);
